热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

也就是|文传_密码学基础知识

篇首语:本文由编程笔记#小编为大家整理,主要介绍了密码学基础知识相关的知识,希望对你有一定的参考价值。密码学基础知识对称加密算法&#

篇首语:本文由编程笔记#小编为大家整理,主要介绍了密码学基础知识相关的知识,希望对你有一定的参考价值。



密码学基础知识

对称加密算法(私钥加密算法)



对称加密:使用同一密钥进行加密和解密。意思就是你对一段内容加密时用的密钥,和对加密后的密文用的密钥是同一个密钥,这就叫做是对称加密。


使用的是私钥密码加密。


优势:加解密速度快,密文是紧凑的,安全。


对称加密的加密解密流程如下图:

但是对称加密有一个问题,就是我们使用了我们的私钥对明文进行了加密,但是我们的这个私钥怎么给对方呢?通过网络传输我们确实是可以把我们的私钥信息传递给对方,但是这种方式不安全,因为黑客是可以通过网络获取到你传输的密钥的。



著名对称加密算法


DES 3DES: DES算法的密钥长度一共有56位,3DES算法是把密钥的长度放大三倍即168,DES算法存在很大的延迟性,不能够用于无线/语音视频加密


AES: AES算法使用了128位,192位或256位的长度的密钥,3DES的替代加密技术,软硬件运行效率高,可用于无线/语音视频加密


RC系列(RC2,RC4,RC5): RC2加密算法,密钥长度可变,RC2的运算速度比DES快,软件实现的RC2比DES快三倍,RC2是否比DES安全取决于其所使用的密钥长度


IDEA: IDEA国际数据加密算法,分组长度为64位,密钥长度为128位


CAST


Blowfish: 密钥长度可变,安全性可以通过改变密钥长度进行调整,适用于密钥不经常改变的加密,不适用于需要经常变换密钥的情况




DES算法框架图:




非对称加密算法(公钥加密算法)

公钥加密比私钥加密出现的晚,私钥加密使用同一个密钥来加密和解密信息,公钥加密使用两个密钥,一个密钥用于加密信息,另一个密钥用于解密信息。

非对称加密算法中公钥用来加密,私钥用来解密。

非对称加密算法的工作流程如下图:



**非对称加密算法特点:**私钥需要安全保存(不通过网络传送),公钥公开,加密速度慢,密文非紧凑,可以与对称加密相结合。




常见的非对称加密算法:


RSA: 密钥长度在512~4096bit之间,安全性基于大素数因子分解的困难性。RSA比用软件实现的DES慢100倍,RSA的主要功能有加密,数字签名和密钥交换(加密散列,密钥)




发送方先用接收方的公钥进行加密,然后把密文传输给接收方,最后接收方再使用自己的私钥进行解密。


DSA:


ECC:比特币的加密算法用的就是这个。




公钥加密算法的三种用途:


加密/解密


数字签名:发送方用自己的私钥签署报文,接收方用对方的公钥验证对方的签名


密钥交换:双方协商会话密钥



数字签名

首先什么事数字签名,数字签名的流程是什么?如下图:

首先,发送方把明文加密成密文,然后会把明文中的一段摘要加密成密文摘要,接着发送方会把密文和原文的摘要密文全部都发给接收方,而原文的摘要密文其实也就是发送方的签名。但是在我们通过网络传输的过程中,我们的密文和签名可能会被黑客篡改,那么我们怎么判断有没有被篡改呢?接收方接收到密文之后,解密密文成明文,然后通过哈希得到明文摘要。接着接收方再解密摘要密文,又会解析成一个明文摘要。最后比较一下这两个明文摘要

是否相同,如果相同则通过。

其实总的来说,就是接收方需要看一下密文里面的签名和发送方发来的签名是否是同一个签名,如果是同一个签名,那么这份数据就是安全未被篡改过的,否则的话,这份数据在网络传输的时候已经被篡改过了。


数字证书和CA

首先提出一个问题,你怎么能确定你加密时使用的公钥就是接收方的公钥呢?如下图:

可以用数字证书证明。

数字证书(Digital Certificate,类似身份证的作用),CA(Certificate Authority,电子商务认证授权机构)。

我们要证明的公钥加上CA权威机构的私钥可以生成一个数字证书,这个数字证书里面包含的信息有姓名,地址,组织,所有者公钥,证书有效期,认证机构数据签名。如下图:

数字证书的具体样式如下图:


商户API证书

商户API证书,是商户申请的,包含商户的商户号,公司名称,公钥信息。

商户API证书其实也就是CA权威机构发布的一个可以表示商户的信息的证书。

商户API证书就好比我们人的身份证一样,是由公安机构发布的,上面有我们公民信息的证书。


商户API私钥

商户申请商户API证书时,会生成一个商户私钥,并保存在本地证书文件夹的文件apliclient_key.pem中。私钥也可以通过工具从商户的p12证书中导出。请妥善保管好你的商户私钥文件,不要把私钥文件暴露在公共场合,如上传到Github,写在客户端代码等。


微信支付平台证书

微信支付平台证书是指由微信支付负责申请的,包含微信支付平台标识,公钥信息的证书。商户可以使用平台证书中的公钥进行验签。


通过证书序列号声明所使用的证书

某些情况下,将需要更新密钥对和证书。为了保证更换过程中不影响API的使用,请求和应答的HTTP头部中包括证书序列号,以声明签名或者加密所用的密钥对和证书。


  • 商户签名使用商户私钥,证书序列号包含在请求HTTP头部的Authorization的serial_no
  • 微信支付签名使用微信支付平台私钥,证书序列号包含在应答HTTP头部的Wechatpay-Serial
  • 商户上送敏感信息时使用微信支付平台公钥加密,证书序列号包含在请求HTTP头部的Wechatpay-Serial

API v3密钥

为了保证安全性,微信支付在回调通知平台证书下载接口中,对关键信息进行了AES-256-GCM加密。API v3密钥是加密时使用的对称密钥。


推荐阅读
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在iOS开发过程中,当开发团队使用多台Mac设备时,可能会遇到无法继续申请新证书的问题。本文介绍了如何通过导出.p12文件来解决这一问题,并确保团队成员能够在不同设备上共享同一个证书。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • 本文提供了一种有效的方法来解决当Android Studio因电脑意外重启而导致的所有import语句出现错误的问题。通过清除缓存和重建项目结构,可以快速恢复开发环境。 ... [详细]
  • Fiddler 安装与配置指南
    本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 探索百度WebFE团队打造的强大HTML5上传插件Web Uploader
    本文将详细介绍由百度WebFE团队开发的Web Uploader,这是一款集成了HTML5与Flash技术的上传组件,以其卓越的用户体验和强大的功能著称。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • PHP混淆代码的破解与理解
    本文探讨了PHP中常见的代码混淆技术及其破解方法,包括简单的变量名混淆和更复杂的加密技术。 ... [详细]
  • 本文介绍了实时流协议(RTSP)的基本概念、组成部分及其与RTCP的交互过程,详细解析了客户端请求格式、服务器响应格式、常用方法分类及协议流程,并提供了SDP格式的深入解析。 ... [详细]
  • AcetoneISO:Ubuntu Linux下的全能虚拟光驱工具
    AcetoneISO 是一款功能强大的虚拟光驱软件,适用于 Linux 和 Mac 系统。它支持多种映像文件格式的挂载和转换,并提供丰富的文件管理功能。 ... [详细]
author-avatar
林俊雯868043
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有